﻿#pragma once

#if defined(_MSC_VER)
#define _CRT_SECURE_NO_WARNINGS
#endif

// 头文件包含部分
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#include <assert.h>
#include <errno.h>
//#include <windows.h>



// 字符串函数声明部分
extern size_t my_strlen1(const char* str);
extern size_t my_strlen2(const char* str);
extern char* my_strcpy(char* dest, const char* src);
extern char* my_strcpy_n(char* dest, const char* src, size_t n);
extern char* my_strcat(char* dest, const char* src);
extern char* my_strcat_n(char* dest, const char* src, size_t n);
extern int my_strcmp(const char* str1, const char* str2);
extern int my_strcmp(const char* str1, const char* str2);
extern void str_compare(const char* str1, const char* str2);
extern void str_compare_n(const char* str1, const char* str2, size_t n);
extern char* my_strstr1(const char* str, const char* substr);
extern char* my_strstr2(const char* str, const char* substr);
extern char* KMPsearch(char* txt, char* pat);


// 内存函数声明部分
extern void* my_memcpy(void* dest, const void* src, size_t count);
extern void* my_memmove(void* dest, const void* src, size_t count);


// 部分剩余作业函数声明部分
extern void change_num(int* num);
extern void print_triangle(int n);
extern void print_triangle(int n);
extern void rank_players();
extern void search_killer();
extern void print_YangHui_triangle(int n);
extern void left_rotate(char* arr, int k);
extern struct coord search_num_arr(int arr[][5], int rows, int cols, int value);
//extern char* right_rotate(char* arr, int k);
extern int is_rotate_right(char* s1, int len1, char* s2, int len2);
extern int is_rotate_left(char* s1, int len1, char* s2, int len2);
extern int** transpose_matrix(int** arr, int rows, int cols);
extern int is_upper_triangle(int** arr, int rows, int cols);
extern char* is_sorted(int* arr, int len);


// 结构体声明部分
struct coord
{ // 坐标结构体
	int x;
	int y;
};


// 宏定义部分
#define print_start_line(start_str) printf("---------- %s ----------\n", start_str)
#define print_end_line(end_str) printf("---------- %s ----------\n\n\n", end_str)
